/**
 * @brief    数据导出类
 *  调用Export函数后，会根据sg.conf文件内配置的规则进行结果的输出。
 *  输出的文件将存储在project设置的workspace中，后缀名为vtk、h5等。
 * @version  0.1
 * @author   wuxingchuang
 * @date     2025.02.14
 *         _
 *     ___| |__   ___ _ __   __ _  ___  _ __   __ _
 *    / __| '_ \ / _ \ '_ \ / _` |/ _ \| '_ \ / _` |
 *    \__ \ | | |  __/ | | | (_| | (_) | | | | (_| |
 *    |___/_| |_|\___|_| |_|\__, |\___/|_| |_|\__, |
 *                          |___/             |___/
 * @copyright (c) 2025 by 神工仿真, All Rights Reserved.
 */
#pragma once

#include <memory>
#include <string>

#include "DataStructure/Input/Solver/Project.h"

#include "Common/Export.h"
#include "Common/ExportNamespace.h"

DBSERVICEFACTORY_DEC

SG_EXPORT_NAMESPACE_OPEN

/**
 * 导入器，用于将数据模型导入数据库
 * 先创建该对象，然后调用对应文件类型的Export方法
 */
class Export_DECLSPEC SGExporter
{
  public:
    /// @brief 构建SGExport
    /// @param  DBServiceFactory指针
    SGExporter (std::shared_ptr<SG::DBManager::DBServiceFactory>);

    /// @brief 析构
    ~SGExporter ();

    /// @brief 导入BDF模型文件
    /// @param filepath 文件路径
    /// @return 导入状态
    SG::DataStructure::Common::Status Export (const SG::DataStructure::FEM::Project project, const int world_rank = -1);

  private:
    std::shared_ptr<SG::DBManager::DBServiceFactory> m_dbServiceFactory;  ///<  DBServiceFactory指针,调用该工厂创建的Service存储数据
};

SG_EXPORT_NAMESPACE_CLOSE
